阅读更多

11顶
0踩

研发管理

转载新闻 Redis 在现实世界的 5 个用法

2018-04-11 11:19 by 副主编 jihong10102006 评论(3) 有80839人浏览
Redis是一个强大的内存数据结构存储,包含数据库,缓存和消息代理等多种用途。大多数人经常认为它不过是一个简单的键值存储,但其实它有更多的能力。下面我将会总结一些Redis可以做的事情的真实例子。

1.全页面缓存

首先是整页缓存。如果你正在使用服务器端呈现的内容,则不需要为每个单独的请求重新渲染每个页面。使用如Redis这样的缓存,你可以缓存经常请求的内容,从而大大减少请求最多的页面的延迟,并且大多数框架针对Redis缓存页面都有hooks。
简单命令
/ Set the page that will last 1 minuteSET key "<html>...</html>" EX 60// Get the pageGET key

2.排行榜

Redis令人耀眼的地方之一就是排行榜。由于Redis在内存中,因此可以非常快速和高效地处理递增和递减。将此与每个请求运行SQL查询比较,性能收益巨大!这与Redis的排序集相结合意味着你可以以毫秒为单位抓取列表中评分最高的项目,而且实现起来非常容易。
简单命令
// Add an item to the sorted setZADD sortedSet 1 "one"// Get all items from the sorted setZRANGE sortedSet 0 -1// Get all items from the sorted set with their score
ZRANGE sortedSet 0 -1 WITHSCORES

3.会话Session存储

我所见的Redis最常见的用途是会话存储。与其他会话存储(如Memcache)不同,Redis可以保留数据,以便在缓存停止的情况下,在重新启动时,所有数据仍然存在。即便不是需要严格持续的任务,此功能仍可以为你的用户省去大量的麻烦。没有人会乐于见到他们的会话被无缘无故随机删掉。
简单命令
// Set session that will last 1 minuteSET randomHash "{userId}" EX 60// Get userIdGET randomHash

4.队列

使用Redis可以做的一个不太常见,但非常有用的事情是排队。无论是电子邮件队列还是其他应用程序使用的数据,你都可以在Redis中创建一个高效的队列。任何熟悉堆栈以及会push和pop项目的开发人员都可以轻松自然地使用此功能。
简单命令
// Add a Message
HSET messages <id> <message>ZADD due <due_timestamp> <id>// Recieving Message
ZRANGEBYSCORE due -inf <current_timestamp> LIMIT 0 1
HGET messages <message_id>// Delete  Message
ZREM due <message_id>HDEL messages <message_id>

5.pub/sub

Redis在真实世界的最终用法即我将在这篇文章中提出的pub / sub。这是Redis内置的最强大的功能之一;得到的可能是无限的。你可以创建一个实时聊天系统,在社交网络上触发好友请求的通知等等。这个功能是Redis提供的最被低估的功能之一,但功能非常强大,而且使用简单。
简单命令
// Add a message to a channelPUBLISH channel message// Recieve messages from a channelSUBSCRIBE channel

结论

我希望你会喜欢这些Redis在真实世界的使用。虽然这篇文章只抓住了Redis能为你做的事情的表面,但是我希望你能从中获得应如何充分利用Redis的启发。
  • 大小: 14.4 KB
来自: 代码技巧
11
0
评论 共 3 条 请登录后发表评论
3 楼 hongyabing 2018-05-02 15:25
2 楼 andy54321 2018-04-13 14:48
redis很强大。
尤其是结合 redis sentinel 和 3.x后支持 的 redis cluster。
1 楼 masuweng 2018-04-12 15:03
  

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • Redis 在现实世界的 5 个用法(转)

    Redis是一个强大的内存数据结构存储,包含数据库,缓存和消息代理等多种用途。大多数人经常认为它不过是一个简单的键值存储,但其实它有更多的能力。下面我将会总结一些Redis可以做的事情的真实例子。  1.全页面...

  • 华纳云:Redis在现实中的5个用法

    Redis是一个强大的内存数据结构存储,包含数据库,缓存和消息代理等多种用途。大多数人经常认为它不过是一个简单的键值存储,但其实它有更多的能力。下面我将会总结一些Redis可以做的事情的真实例子。 1.全页面缓存 ...

  • 在现实世界Redis 如何使用?

    Redis是一个强大的内存数据结构存储,包含数据库,缓存和消息代理等多种用途。大多数人经常认为它不过是一个简单的键值存储,但其实它有更多的能力。下面将会总结一些Redis...

  • 在 Node.js 中操作 Redis

    在 Node.js 中操作 Redis

  • Redis学习笔记

    Redis学习 NoSql历史发展 单机 MySQL 的美好时代 场景:网站访问量、数据量不大 瓶颈:无法解决数据量大,数据B树...在90年代,一个网站的访问量一般都不大,用单个数据库完全可以轻松应付。在那个时候,更多的都是静

  • Redis入门

    Redis 本文使用的为Redis6.2.6版本 ...Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言

  • Java 开发 2.0: 现实世界中的 Redis

    之前,我已在本系列中讨论过 NoSQL 的概念,也介绍了一些与 Java 平台兼容的 NoSQL 数据存储,其中包括 Google 的 Bigtable 和 Amazon 的 SimpleDB。此外,我还讨论过较为常见的基于服务器的数据存储,比如 MongoDB ...

  • redis

    Redis 是当前互联网世界最为流行的 NoSQL(Not Only SQL)数据库。NoSQL 在互联网系统中的作用很大,因为它可以在很大程度上提高互联网系统的性能。 Redis 具备一定持久层的功能,也可以作为一种缓存工具。对于 ...

  • redis streams_如何在Redis Streams中使用消费者组

    redis streams Roshan Kumar是Redis Labs的高级产品经理。 Redis Streams是Redis... 在本文中,我将解释如何在Redis Streams中使用使用者组。 消费者组是一种在多个客户端之间分配消息流以加快处理速度或减轻较慢...

  • 通过 Redis 构建一个响应式架构

    本文翻译自Building a Reactive Architecture Around Redis[1],如果觉得本文对你有所帮助,不妨点个赞支持一下Redis 是我遇到过的最强大、最通...

  • Redis 5. redis的持久化

    Redis @Author:hanguixian ...五 redis的持久化 官网介绍:...RDB是Redis数据的一个非常紧凑的单文件时间点表示。RDB文件非常适合备份。例如,您可能希望在最近24小时内每小时归档您的RDB文件,并...

  • Redis——redis配置与优化

    文章目录一、关系数据库与非关系型数据库1、关系型数据库2、非关系型数据库二、 Redis 简介1、Redis的应用场景2、Redis的优点三、Redis 安装部署1、安装Redis2、配置参数四、Redis 命令工具1. redis-cli 命令行工具...

  • Redis 要被替代了?

    我们使用 Redis 7.0.0,直接通过源码构建Dragonfly 使用的则是构建自 https://github.com/Dragonfly/dragonfly#building-from-source 的 6 月 3 日版源码(hash=e806e6ccd8c79e002f721a1a5ecb847bd7a06489)验证 ...

  • Redis 分布式锁

    不难发现,分布式锁比进程内本地锁要复杂得多,也重得多(本地锁操作是纳秒级别,分布式锁操作是毫秒级别),现实中,在使用分布式锁之前我们要思考下有没有其它更优方案,比如乐观锁、Lua脚本等。//给用户增加积分...

  • 《这是全网最硬核redis总结,谁赞成,谁反对?》六万字大合集

    后端需要知道的关于redis的事,基本都在这里了。 此文后续会改为粉丝可见,所以喜欢的请提前关注。 你的点赞和评论是我创作的最大动力,谢谢。 《三天给你聊清楚redis》第1天先唠唠redis是个啥(18629字) ...

  • 关于__Federico Milano 的电力系统分析工具箱.zip

    1.版本:matlab2014/2019a/2021a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。

  • mlab-upenn 研究小组的心脏模型模拟.zip

    1.版本:matlab2014/2019a/2021a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。

  • 混合图像创建大师matlab代码.zip

    1.版本:matlab2014/2019a/2021a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。

Global site tag (gtag.js) - Google Analytics